package cn.tedu.micro.demo.all.controller;

import cn.tedu.micro.demo.all.service.CartService;
import cn.tedu.micro.demo.common.result.JsonResult;
import cn.tedu.micro.demo.pojo.vo.CartVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 几乎所有的接口 算是一种前后端分离模式
 * 后端再也不处理 页面展示效果 后端只返回数据
 */
@RestController
public class CartController {
    @Autowired
    private CartService cartService;
    /**
     * 添加商品到购物车
     */
    @PostMapping("/cart/add")
    public JsonResult addCart(Integer userId, String productCode, Integer count){
        //调用业务层
        cartService.addCart(userId,productCode,count);
        return JsonResult.ok();
    }
    /**
     * 查询我的购物车 ?userId=123
     */
    @GetMapping("/cart/list")
    public JsonResult<List<CartVO>> listCart(String userId){
        //控制层 要返回什么类型的data 要调用业务层封装什么
        List<CartVO> list=cartService.listCart(userId);
        return JsonResult.ok("OK",list);
    }
    /**
     * 删除购物车
     */
    @PostMapping("/cart/delete")
    public JsonResult deleteCart(String userId, String productCode){
        //调用业务层
        cartService.deleteCart(userId,productCode);
        //怎么保证 业务异常 不向外抛出
        return JsonResult.ok();
    }
    //测试网关入口的 后端接口功能
    @Value("${server.port}")
    private String port;
    @GetMapping("/cart/hello")
    public String hello(){
        return "hello gateway , i am from "+port;
    }

















}
